![BlackbeltオンラインセミナーでAWSにおける地理情報の活用方法を学んでみた](https://devio2023-media.developers.io/wp-content/uploads/2018/02/eyecatch-geolocation.png)
BlackbeltオンラインセミナーでAWSにおける地理情報の活用方法を学んでみた
いつもお世話になっているBlackBeltオンラインセミナーにおいて、以下のセミナーが開催されました。
現在のアプリケーションによって位置情報を扱うことは非常に一般的になりつつあります。このセッションでは、AWSで位置情報を扱う方法や、実際の活用方法などをお届けします。効率よく位置情報を扱う方法を勉強いただくことができます。引用:[AWS Black Belt Online Seminar] Location Information on AWS
「そもそも位置情報って、なんやねん?」
「AWSのサービスだと、どういう感じで使えんの?」
「アーキテクチャは、どんなふうに組めばええの?」
というところがすっきりわかる内容で、非常に受講してて満足度が高かったので、その内容をお届けいたします。
__ (祭) ∧ ∧ Y ( ゚Д゚) Φ[_ソ__y_l〉 地理情報ダワッショイ |_|_| し'´J
セミナー資料
(最初に)位置情報と地理情報とは?
位置情報とは、座標系の中でどこになにがあるかという情報を表したもの。位置情報に対して、地球上の絶対座標を追加すると、それはGeospatial data(地理情報)となる。
地理情報は、地球上に存在するあらゆる物体や事象の状態情報で、座標、住所、都市、郵便番号などの形式で表現できる。
しかし、そんな地理情報も所詮なはただのデータでしかない。それをどのように活用するかがポイントになる。そのためのシステムを最初に紹介する。
- 地理情報システム
- モバイルアプリケーション
- 自動運転
地理情報システム(GIS)での利用
Geographic Information Systemの略。主に以下の処理を行う。
- Geospatial dataに付加情報を追加
- 天気
- 最短経路情報
- Geospatial dataの加工
- 可視化
高速道路の渋滞状況や、都市の区画変更計画の策定などに利用されている。主要なGISソフトウェアとしては、以下の2つが有名である。
QGIS
- OSSで無償利用が可能
ArcGIS
- ESRI社の有償ソフトウェア
- AWSマーケットプレイスにもあるので、インスタンスがすぐ起動し、即開始可能。ライセンス料金込みで利用できる。
- ArcGIS | ESRIジャパン
モバイルアプリケーションでの利用
スマホなどから、地理情報を使い、各種機能を実装できる。
ジオロケーション
現在いる場所をAPI経由でサーバに送信することで、定期的な位置通知が可能。各種ブラウザやスマホではAPIなどが準備されているため比較的簡単に実装可能
ジオフェンス
オブジェクトがある範囲内に入った場合に通知などのアクションを行う。ゲームや、エリアマーケティングなどで利用される。
自動運転での利用
自動車の自動運転では、地理情報は大きな役割を持つ。「今どこにいるのか」「周りに何があるのか」の2つの情報が重要。
この情報をリアルタイムに取得し提供するために、ダイナミックマップという技術を活用する。各種情報をレイヤとしてリアルタイムに重ね合わせることで自動運転などを実現するための情報として使用する。
地理情報を活用できるAWSのサービス
AWSでは、地理情報を活用可能なサービスとして、以下が存在する
- Amazon RDS
- Amazon Aurora
- Amazon ElastiCache
- Amazon Elasticsearch Service
- Amazon DynamoDB
- Amazon Athena
- Amazon QuickSight
地理情報をコンピュータで保持する時の基本的な考え方が、GeoHash。
PosgreSQL(Aurora、RDS)での利用方法
PostGISというプラグイン側で位置情報を処理可能。各種関数が利用できる。
MySQL(Aurora、RDS)での利用方法
5.6から平面の位置情報(GEOMETRY型)や、5.7からは、ST_Distance_Sphereの利用が可能。
Auroraでは、dimensionally ordered space-filling curveを利用した位置情報の利用が可能(MySQL5.7と比較して、最大2倍のパフォーマンス改善)。これは、是非活用して欲しい。
Amazon ElastiCache for Redisでの利用方法
Redis 3.0以上のバージョンであれば、GeoHashの利用が可能。
Amazon Elasticsearch Serviceでの利用
AmazonESは、大規模な位置情報をQPSの高いユースケースの場合に便利。
向いている理由は以下の通り。
- レイテンシの低さ
- クラスタを組むことで台数によるスケール(ノード最大数は100)
- マネージドサービスとして活用する場合の運用効率の低さ
Amazon Atehnaでの利用
地理型情報もAthenaは対応済み。ユーザーが多い並列トランザクションには向かないので、一つ一つのクエリが重い場合に利用するとよい。
Amazon QuickSightでの利用
BIツールのQuickSightでも利用が可能。地理情報の可視化をBIベースで提供できる。
Open Data on AWSの活用
Open Dataは無料で利用できるデータとしてAWSが提供しているもので、そこに地理情報データもあるので、是非活用していただきたい。多数の会社や組織にデータを提供して頂いている。ランドサットの画像データなどもある。
パブリックなS3バケットとして提供されているため、AWSの各種サービスから即活用できる。既存のサービスへの組み込みも可能。
(筆者注)初めて知ったんですが、これ便利ですね。特に地理情報とかゲノムデータとか、なかなか触れる機会もないし、テストデータの用意も大変だと思うんですが、コレを使えば各種サービスのお試し実装とかも簡単にできるし、使わない手は無いかと思います。
AWSの各サービスで地理情報を扱う時の相対評価
各指標は厳密なものではなくあくまで感覚的なものであるが、地理情報を扱うAWSシステムに何を使うか検討する時の参考にしていただきたい。
地理情報を利用したアーキテクチャパターン
ここでは、AWSの各種サービスを連携させた地理情報処理のアーキテクチャパターンを紹介する。
IoTアプリケーション
地理情報を受け取ったあとに、IoT Rulesを利用して各処理を振り分ける。ハードウェアの状態変化は、IoT shadowで受け取って処理する。
サーバーレスモバイアプリケーション
Cognitでユーザ認証しつつ、Syncで位置情報を取得し、DynamoDBに格納しておく。複数のユーザ位置情報を登録したときに、ユーザ同志が近くにいるかをLambdaで判定し、プッシュ通知するなど。
GISアプリケーション配信(地図タイル生成)
LambdaやEC2を里よし、バッチ処理で画像を生成し、S3に保持する。前段にはCloudFrontを配置し画像を静的・動的にキャッシュし、配信速度を高速化する。
地図情報活用の事例集
ナビタイムジャパン社:道路プロファイラー
ASCII.jp:ナビタイム「Amazon Athenaがあったから実現した新サービス」 (1/3)
モンサント社:作物の栽培管理
いつどこに作物を植えると効率が良いかを地理情報データを分析・活用してアドバイスを行う。
ホーム | Geospatial Data Catalogue
HERE社:自動運転
まとめと参考資料
- AWS上での地理情報を扱う手段はたくさんありユースケースによって選択することができる
- 地理情報をうまく扱うことで、モバイルアプリから自動運転まで様々な用途に利用可能
- Open Dataも用意されているのでそれらと組み合わせることですぐにでも新しいことが実現できる
- すでに様々なお客様でも活用されているので是非確認ください
参考資料:
- Mapping and GeoSpatial Analysis in Amazon Web Services Using ArcGIS
- Amazon Aurora under the hood: Z-order curvesを用いたgeospatial indexの作成 | Amazon Web Services ブログ
オンラインセミナー受講したハマコー所感
以上、AWSにおける地理情報の活用についてまとめてみました。全く知らない分野だったんですが、40分ほどのオンラインセミナー、非常にコンパクトに纏まっていてありがたかったです。
個人的には、ElastiCachやElasticserch Serviceにおける地理情報の活用方法と、Athenaを利用した分析手法が面白かったです。
特に、それらをテストするときに用意するのが面倒くさそうな地理情報テストデータが、オープンデータとして、AWSに用意されているのが面白かったです。Athenaとか試す時には非常に面白そうなので、別の機会に、このOpen Data on AWSの解説記事も書いてみようと思います。
今まで地理情報を活用したアプリケーションの現場に立ち会ったことがないのですが、これをきっかけに使えそうなユースケースでは、積極的に活用提案できればよござんす。
それでは、今日はこのへんで。濱田(@hamako9999)でした。